<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        

        //复习:ES5中为任意函数的内置对象,arguments是一个对应于传递给函数的参数的类数组对象，arguments对象是所有函数(非箭头)中都可以用的局部变量
        // arguments是一个(伪)数组,即其结构上类似于数组，但实际上并不是一个数组，不能调用数组的方法
        function add(){
            // console.log(arguments);
            var sum=0;
            for(var i=0;i<arguments.length;i++){
                sum+=arguments[i]
            }
            return sum;
        }

       console.log( add(100,200));
       console.log(add(1,2,5,3));

        //ES6中新增剩余参数，形式为:...形参，用于获取多余的参数
        //在函数中，剩余参数(rest)其实是一个数组，用于存放多余的参数
       function add2(...arrs){
           
           console.log(arrs);
        }
        add2(200,300,400);
        add2("alice","baby","cc","dd");

        //剩余参数必须是最后一个参数，否则语法报错
        function f1(a,b,...c){
            console.log(a);
            console.log(b);
            console.log(c);
        }
        f1(10,200,300,400,500);
        f1("alice");//alice undefined []

        //有了剩余参数，可以代替arguments
        function f2(...arrs){
            var sum=0;
            for(var i=0;i<arrs.length;i++){
                sum+=arrs[i];
            }
            return sum;
        }
        console.log(f2(10,20));
        console.log(f2(100,200,300,400));
    </script>
</head>
<body>
    
</body>
</html>